package artid.com.arttogoa.xml;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;

import artid.com.arttogoa.parser.FilesBean;
import artid.com.arttogoa.parser.FolderBean;

public class FilesBeanParserImpl implements FilesParserImpl {

	@Override
	public List<FilesBean> parse(String str) throws Exception {
		List<FilesBean> mList = null;
		FilesBean FilesBean = null;
		InputStream in_nocode = new ByteArrayInputStream(str.getBytes());
		// 由android.util.Xml创建一个XmlPullParser实例
		XmlPullParser xpp = Xml.newPullParser();
		// 设置输入流 并指明编码方式
		xpp.setInput(in_nocode, "gb2312");
		// 产生第一个事件
		int eventType = xpp.getEventType();

		while (eventType != XmlPullParser.END_DOCUMENT) {
			switch (eventType) {
			// 判断当前事件是否为文档开始事件
			case XmlPullParser.START_DOCUMENT:
				mList = new ArrayList<FilesBean>(); // 初始化books集合
				break;
			// 判断当前事件是否为标签元素开始事件
			case XmlPullParser.START_TAG:
				System.out.println(xpp.getName() + "-" + xpp.getText());
				if (xpp.getName().equals("photo")) { // 判断开始标签元素是否是book
					System.out.println("photo");
					FilesBean = new FilesBean();
				} else if (xpp.getName().equals("name")) {
					eventType = xpp.next();// 让解析器指向name属性的值
					// 得到name标签的属性值，并设置FilesBean的name
					FilesBean.setName(xpp.getText());
				} else if (xpp.getName().equals("thumbURL")) {
					eventType = xpp.next();// 让解析器指向thumbURL属性的值
					// 得到age标签的属性值，并设置FilesBean的thumbURL
					FilesBean.setThumbURL(xpp.getText());
				} else if (xpp.getName().equals("creatTime")) {
					eventType = xpp.next();// 让解析器指向creatTime属性的值
					// 得到age标签的属性值，并设置FilesBean的creatTime
					FilesBean.setCreatTime(xpp.getText());
				} else if (xpp.getName().equals("fileSize")) {
					eventType = xpp.next();// 让解析器指向fileSize属性的值
					// 得到age标签的属性值，并设置FilesBean的fileSize
					FilesBean.setFileSize(xpp.getText());
				} else if (xpp.getName().equals("imgURL")) {
					eventType = xpp.next();// 让解析器指向imgURL属性的值
					// 得到age标签的属性值，并设置FilesBean的imgURL
					FilesBean.setImgURL(xpp.getText());
				}
				// System.out.println(FilesBean.toString());
				break;
			// 判断当前事件是否为标签元素结束事件
			case XmlPullParser.END_TAG:
				if (xpp.getName().equals("photo")) { // 判断结束标签元素是否是book
					mList.add(FilesBean); // 将book添加到books集合
					FilesBean = null;
				}
				break;
			}
			// 进入下一个元素并触发相应事件
			eventType = xpp.next();
		}
		return mList;

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.example.browsetest.xml.FilesParserImpl#parseF(java.lang.String)
	 */
	@Override
	public List<FolderBean> parseF(String str) throws Exception {
		List<FolderBean> mList = null;
		FolderBean FolderBean = null;
		InputStream in_nocode = new ByteArrayInputStream(str.getBytes());
		// 由android.util.Xml创建一个XmlPullParser实例
		XmlPullParser xpp = Xml.newPullParser();
		// 设置输入流 并指明编码方式
		xpp.setInput(in_nocode, "gb2312");
		// 产生第一个事件
		int eventType = xpp.getEventType();

		while (eventType != XmlPullParser.END_DOCUMENT) {
			switch (eventType) {
			// 判断当前事件是否为文档开始事件
			case XmlPullParser.START_DOCUMENT:
				mList = new ArrayList<FolderBean>(); // 初始化books集合
				break;
			// 判断当前事件是否为标签元素开始事件
			case XmlPullParser.START_TAG:
				if (xpp.getName().equals("folder")) { // 判断开始标签元素是否是book
					System.out.println("folders");
					FolderBean = new FolderBean();
				} else if (xpp.getName().equals("name")) {
					eventType = xpp.next();// 让解析器指向name属性的值
					// 得到name标签的属性值，并设置FilesBean的name
					FolderBean.setName(xpp.getText());
				} else if (xpp.getName().equals("fileCount")) {
					eventType = xpp.next();// 让解析器指向thumbURL属性的值
					// 得到age标签的属性值，并设置FilesBean的thumbURL
					FolderBean.setFileCount(xpp.getText());
				}
				// System.out.println(FilesBean.toString());
				break;
			// 判断当前事件是否为标签元素结束事件
			case XmlPullParser.END_TAG:
				if (xpp.getName().equals("folder")) { // 判断结束标签元素是否是book
					mList.add(FolderBean); // 将book添加到books集合
					FolderBean = null;
				}
				break;
			}
			// 进入下一个元素并触发相应事件
			eventType = xpp.next();
		}
		return mList;

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.example.browsetest.xml.FilesParserImpl#parseF(java.lang.String)
	 */
	@Override
	public String parseMac(String str) throws Exception {
		String mac = "";
		List<FolderBean> mList = null;
		FolderBean FolderBean = null;
		InputStream in_nocode = new ByteArrayInputStream(str.getBytes());
		// 由android.util.Xml创建一个XmlPullParser实例
		XmlPullParser xpp = Xml.newPullParser();
		// 设置输入流 并指明编码方式
		xpp.setInput(in_nocode, "gb2312");
		// 产生第一个事件
		int eventType = xpp.getEventType();

		while (eventType != XmlPullParser.END_DOCUMENT) {
			switch (eventType) {
			// 判断当前事件是否为文档开始事件
			case XmlPullParser.START_DOCUMENT:
				break;
			// 判断当前事件是否为标签元素开始事件
			case XmlPullParser.START_TAG:
				if (xpp.getName().equals("device")) { // 判断开始标签元素是否是book
					System.out.println("device");
				} else if (xpp.getName().equals("name")) {
					eventType = xpp.next();// 让解析器指向name属性的值
					// 得到name标签的属性值，并设置FilesBean的name
					mac = xpp.getText();
				}
				// System.out.println(FilesBean.toString());
				break;
			// 判断当前事件是否为标签元素结束事件
			case XmlPullParser.END_TAG:
				if (xpp.getName().equals("device")) { // 判断结束标签元素是否是book

				}
				break;
			}

			// 进入下一个元素并触发相应事件
			eventType = xpp.next();
		}
		return mac;

	}

	@Override
	public String serialize(List<FilesBean> beauties) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

}